package jdk5;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *	指示某一类型的注解将通过 javadoc 和类似的默认工具进行文档化
 */
@Documented
/**
 * 	指示注解类型的注释要保留多久。如果注释类型声明中不存在 Retention 注释，则保留策略默认为 RetentionPolicy.CLASS
 */
@Retention(RetentionPolicy.RUNTIME)
/**
 *	指示注解类型所适用的程序元素的种类。如果注释类型声明中不存在 Target 元注释，
 *	则声明的类型可以用在任一程序元素上。如果存在这样的元注释，则编译器强制实施指
 *	定的使用限制。
 */
@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.ANNOTATION_TYPE })
/**
 * Inherited表示该注解是否对类的子类继承的方法等起作用
 */
@Inherited
public @interface Annotation {

	// 和接口一样默认是public abstract
	String value() default "";
}
